package HRMPROJECT.CONTROLLERS;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;

import javax.swing.JComboBox;
import javax.swing.table.DefaultTableModel;

import HRMPROJECT.BASEUTILS.Commons;
import HRMPROJECT.MODELS.DepartmentEntity;
import HRMPROJECT.MODELS.DepartmentModels;
import HRMPROJECT.MODELS.SecurityContexts;

public class DepartmentController {
    private Connection m_objConnection = null;
    private SecurityContexts m_objSecurity = null;// ??
    private DepartmentModels m_objModels = null;

    public DepartmentController(Connection objConnection, SecurityContexts objSecurity) {
        m_objConnection = objConnection;
        m_objSecurity = objSecurity;

        m_objModels = new DepartmentModels(m_objConnection);
    }

    /***
     * Nghiệp vụ hiển thị danh sách nhân viên
     * @return
     * @throws SQLException 
     */
    public ResultSet getDepartmentAll() throws SQLException {
        return m_objModels.getDepartmentAll();
    }

    /***
     * Nghiệp vụ thêm thông tin nhân viên
     * @param objEntity
     * @return
     * @throws SQLException
     */
    public boolean InsertDepartment(DepartmentEntity objEntity) throws SQLException {
        return m_objModels.InsertElement(objEntity);
    }

    /***
     *Nghiệp vụ cập nhật thông tin nhân viên
     * @param objEntity
     * @return
     * @throws SQLException
     */
    public boolean UpdateDepartment(DepartmentEntity objEntity) throws SQLException {
        return m_objModels.UpdateElement(objEntity);
    }

    /***
     * Nghiệp vụ xóa thông tin nhân viên
     * @param objEntity
     * @return
     * @throws SQLException
     */
    public boolean DeleteDepartment(DepartmentEntity objEntity) throws SQLException {
        return m_objModels.DeleteElement(objEntity);
    }

    // Thiết lập sự lựa chọn trên ComboBox theo giá trị (Lớp học)
    public static void setSelectedValue(JComboBox comboBox, String value) {
        DepartmentEntity item;
        for (int i = 0; i < comboBox.getItemCount(); i++) {
            item = (DepartmentEntity) comboBox.getItemAt(i);
            if (item.getNames().equals(value)) {
                comboBox.setSelectedIndex(i);
                break;
            }
        }
    }

    // Lấy về giá trị từ ComboBox theo chỉ số (Lớp học)
    public int getSelectedValue(JComboBox comboBox, int i) {
        DepartmentEntity item;
        item = (DepartmentEntity) comboBox.getItemAt(i);
        return item.getDepartId();
    }

    /***
     * Nghiệp vụ hiển thị thông tin phòng ban lên ComboBox
     * @param comboBox
     * @throws SQLException
     */
    public void getDepartmentOf(JComboBox comboBox) throws SQLException {
        ResultSet objRs = null;
        try {
            objRs = getDepartmentAll();
            // comboBox.removeAllItems();
            DepartmentEntity objDepartEn = null;
            while (objRs.next()) {
                objDepartEn = new DepartmentEntity();
                objDepartEn.setDepartId(objRs.getInt("DepartId"));
                objDepartEn.setNames(objRs.getString("Names"));
                comboBox.addItem(objDepartEn);
            }
        } catch (SQLException e) {
            throw e;
        }
    }

    public DefaultTableModel DepartTableModels() throws SQLException {
        DefaultTableModel objDtm = null;
        try {
            ResultSet objRs = getDepartmentAll();
            Commons objComs = new Commons();
            objDtm = new DefaultTableModel();
            objDtm = objComs.getModels(objRs);
        } catch (SQLException e) {
            throw e;
        }
        return objDtm;
    }
}
